package com.rw.coco.api.data;

/**
 * 事务开关
 * 如果可可使用的是数据库来源
 * 那么这个事务开关能够很好的开启和关闭事务
 */
public interface TransactionSwitch {
    /**
     * 开启事务
     *
     * @param transactionId 开启的事务ID，这个ID在后面会用来回滚或者提交
     */
    void begin(String transactionId);

    /**
     * 回滚事务
     *
     * @param transactionId 回滚这个ID的事务，回滚的事务一定是之前开启过的事务，
     *                      如果它所指向的事务为空，请进行空回滚
     */
    void rollback(String transactionId);

    /**
     * 提交事务
     *
     * @param transactionId 提交这个ID的事务，提交的事务一定是之前开启过的事务，
     *                      如果它指向的事务为空，请进行空提交
     */
    void commit(String transactionId);
}
